package com.atguigu.bigdata.scala.mytest.chapter06

//半生类
class Test_Single {
  //成员方法
  def fun2():Unit={
    println("fun2")
  }
}
//半生对象
object Test_Single {
  def main(args: Array[String]): Unit = {
    //模拟静态方法
    Test_Single.fun1()
    //成员方法通过对象调用
    val single: Test_Single = new Test_Single
    single.fun2()
    //Test_Single的类型为Test_Single$
    //com.atguigu.bigdata.scala.mytest.chapter06.Test_Single$@19bb089b
    println(Test_Single)

    //如果创建对象的方法名时指定方法名为( apply )，那么调用时就可以省略
    //user1!=user11
    val user1 = new User() //通过伴生类的构造方法创建伴生类对象
    val user11 = new User() //通过伴生类的构造方法创建伴生类对象

    //user2==user2
    val user2= User //获取半生对象
    val user22= User //获取半生对象

    //user3!=user33
    val user3 = User.apply()//调用伴生对象的方法创建伴生类的对象
    val user33 = User()//调用伴生对象的方法创建伴生类的对象,如果方法名为apply,可省略
    println(user33)
  }

  def fun1():Unit={
    println("fun1")
  }
}

class User {

}
object User {
  def apply() = {
    new User()
  }
  def apply(name:String) = {
    new User()
  }
}

//私有构造方法
class CA private {

}